package van.planifolia.demo04;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/10/26 17:47
 */
//所有没被设置默认值的注解都要在使用的时候写在()里面并且要标注上这个注解属性的名字 例如 名字=值，
// 并且有一个特性如果是数组只有一个值的话可以省略{}，若数组有多个则必须写{}
@My(nubs = 1)
public class MyAnnotationDemo03 {
    @My(nubs={1,2})
    private String name;
    // 第二个特性，如果在注解中只有一个value必须要填写，那么可以省略 ‘value=’，若有多个属性要写则不能省略
    @My(value = MyEnum.LS,nubs = 1)
    public void show(){
        System.out.println("show");
    }

}
@interface My{
    //注解的属性可以为 字符串，基本数据类型，数组，注解类型，枚举

    //注解属性为String
    String name() default "张三";
    //注解属性为枚举
    MyEnum value() default MyEnum.ZS;
    //注解属性为基本数据类型
    int nub() default 12;
    //注解数据类型为数组
    int[] nubs();
    //注解数据类型为注解
    Temp temp() default @Temp;

}
@interface Temp{

}
enum MyEnum{
    ZS("张三","123456"),
    LS("李四","123456")
    ;
    String key;
    String value;

    MyEnum(String key, String value) {
    }
}